草庐IT

Swift 替代 performSelectorOnMainThread

全部标签

c++ - 使用类属性值作为方法默认参数的替代方法?

我想实现这样的目标:classC{intm_nVal;public:C(intnVal):m_nVal(nVal){}voidfoo(intnVal=m_nVal){//usenVal,ifprovided;otherwiseusem_nVal}};Cc(1);c.foo();//use1c.foo(2);//use2这是不可能的,因为C++标准说:anon-staticmembershallnotbeusedinadefaultargument我的选择是:(1)重载foo():classC{intm_nVal;public:C(intnVal):m_nVal(nVal){}voidf

c++ - 是否有 auto_ptr 的替代品可以与 c++11 中的 boost ptr_map 一起使用

在c++11中,auto_ptr已弃用,取而代之的是更合理的unique_ptr。唉,如果你使用boost::ptr_map,auto_ptr就完成了一个非常方便的用途:std::auto_ptrpLayer(newLayer());mRawLayerPtrMap.insert(layerName,pLayer);是否有可能使用与c++11类似的东西。这个我知道Layer*pLayer=newLayer();mFusedLayers.insert(fusedLayerName,pLayer);有效,但auto_ptr在一些更复杂的场景中有它的优点。是否有适用于C++11的替代品?

c++ - typeid() 面向对象的设计替代方案

我有以下使用3个不同映射的类:键始终是字符串,而值可以是字符串、整数或float。classMyMaps{public:templatevoidaddKey(conststd::string&key);voidaddValue(conststd::string&key,conststd::string&value);voidaddValue(conststd::string&key,intvalue);voidaddValue(conststd::string&key,floatvalue);private:std::mapstringFields;std::mapintFields;

c++ - 是否有比使用 C++ 的 FindFirstFile/FindNextFile 更快的枚举文件夹的替代方法?

我需要获取文件夹中子文件夹的所有路径(使用WinAPI和C++。)到目前为止,我找到的唯一解决方案是递归调用FindFirstFile/FindNextFile但是在具有更深层次结构的文件夹上执行此操作需要花费大量时间。所以我想知道,只是为了获取文件夹名称,是否有更快的方法? 最佳答案 如果你真的只需要子文件夹,你应该能够使用FindFirstFileExsearchoptions过滤掉非目录。文档建议这只是一个建议标志,但您的文件系统可能支持此优化-试一试。FindExSearchLimitToDirectoriesThisisa

c++ - 使用两个对象作为 unordered_map 或替代方案的哈希键

定义对象myType后,我需要存储这些对象之间的关系。这些关系存储在矩阵中。事先不知道元素的数量,并非所有元素都有关系(element1可以与element3有关系,但可能与5没有关系)并且内存是一个问题。例如它可能看起来像:element45与:具有特征[3,1;1,4]的元素3具有特征[1,1;1,1]的元素12具有特征[8,1;1,4]的元素1780element1661连接到:具有特征[3,1;6,4]的元素3具有特征[1,1;1,9]的元素1具有特征[8,1;1,1]的元素1780拥有:myType*element1;myType*element2;我想要类似的东西(正确指出

c++ - 在两个不同的命名函数之间进行选择的特征有什么替代方法?

而且...我不想使用函数指针,我真的想直接使用函数本身(因此它可以内联或应用其他优化)。假设:我有一个模板函数/类,它将计算一些数学内容,模板参数是整数类型,可能是unsignedint32_t或者可能是无符号int64_t。在某些时候我需要随机数,所以我需要一个生成器,在一种情况下我将使用mt19937而在另一种情况下我将使用mt19937_64。所以实际的类型名称是不同的,但我必须选择一个并将其实际写入源代码。显然,整数类型的特征类可以正常工作(这就是我现在正在做的)。但在我看来,这种一次性使用在语法方面相当重量级,而且有点非本地(w.r.t.如果你明白我的意思,请阅读源代码)。另

c++ - *(ptr)[j++] 的替代符号?

在将双指针传递给函数时,我在函数中使用了符号*ptr[j++],这导致程序崩溃。我猜它是由于运算符优先级而发生的,所以我通过编写(*ptr)[j++]来纠正它,但我不喜欢这种表示法。感觉又长又乱。我也知道符号ptr[0][j++]但我也不喜欢它。有没有更好的符号或方法来解决所有这些问题?我的代码:#includeusingnamespacestd;voidmset(int**ptr,size_tsize);voidmain(void){constsize_tsize=10;int*ptr=newint[size];mset(&ptr,size);for(size_tn=0;nP.S我知

c++ - 用于收集可调用对象的 std::function 的替代方法

除了求助于std::function之外,还有其他方法可以存储可调用对象的同类集合吗?即,替换以下代码中的类型TusingT=std::function;std::vectorv{some_lambda,some_fn_ptr,some_pmf,some_functor};还有别的吗?当将单个可调用对象作为参数传递给高阶函数时,我尽可能使用模板来避免std::function的开销。但是对于收藏,我不知道有什么可以做的。 最佳答案 直接类型减少开销的最大来源是内联函数的能力。在重复应用的紧密循环中,有时可以对内联函数进行矢量化或以其

c++ - 使用 C++ 中的示例服务器源替代 winsock2

我正在使用在http://tangentsoft.net/wskfaq/examples/basics/select-server.html中找到的这个示例实现这完成了我需要的大部分工作,无阻塞地处理连接并在其线程中完成所有工作(不像某些示例那样为每个连接创建一个新线程),但我很担心,因为有人告诉我winsock将只支持最多64个客户端连接:S这64个连接是真的吗?我还有什么其他选择?如果有一个类似实现的C++示例会很酷。谢谢 最佳答案 替代库:您应该考虑使用boostasio.它是一个跨平台网络库,可以简化您可能必须完成的许多任务

c++ - 出于性能原因替代 stdext::hash_map

我正在开发一个高性能应用程序,其中所有调用都必须合理。我有一张map,在每次交易开始时使用一次来进行我想改进的查找。map在启动时加载,之后不会改变。下面映射中的键是一个std::string但如果需要它可以更改为char数组。C或C++作为解决方案很好。typedefstdext::hash_mapsymbols_t;有没有人知道任何其他可以消除查找或更快的解决方案?提前感谢您的帮助。来自编辑的附加信息:1.hash_map目前有35万个元素。2.每个键值的长度通常在4到10个字符之间。3.从第三方API接收回调信息。回调被赋予一个符号,在进行map查找时用作键值。软件的其余部分由m